package main

import (
	"fmt"
	"log"
	"sort"
)

func failedNoExits(msg string) {
	// 防止立即退出
	var str1 string
	log.Printf("%s \n 输入回车退出！！！", msg)
	fmt.Scanln(&str1)
}

func main() {
	// 读取配置文件
	config := getConf()
	if config == nil {
		failedNoExits("读取配置文件失败，请查看报错日志！！")
	}
	log.Printf("读取配置信息: %+v", config)

	// 获取指定路径下所有文件绝对路径
	pathList := []string{}
	getFiles(config.CheckPath, &pathList)
	// 按照字符排序
	sort.Strings(pathList)

	// 文件打包
	var tarPathName string
	if config.TarEnabled {
		tmpName, err := tarFilesFromArray(pathList, config.TarFileName, config.CheckPath)
		tarPathName = tmpName
		if err != nil {
			log.Printf("打包失败，报错信息：%#v", err)
		}
	}

	if tarPathName != "" && config.SftpInfo.SftpEnabled {
		cliConf := new(ClientConfig)
		log.Printf("cliConf=====>：%#v", cliConf)
		cliConf.createClient(config.SftpInfo.HostAdress, config.SftpInfo.HostPort, config.SftpInfo.UserName, config.SftpInfo.PassWord)
		log.Printf("cliConf=====>：%#v", cliConf)
		//本地文件上传到服务器
		cliConf.Upload(tarPathName, config.SftpInfo.RemoteFolder+config.TarFileName)
	}

	if config.ExportExcelEnabled {
		// 创建Excel
		if config.ExportExcelName == "" && config.ExportExcelSheetName == "" {
			createExcel()
		} else {
			createExcel(excelName(config.ExportExcelName), sheetName(config.ExportExcelSheetName))
		}
		// 把获取的路径插入Excel中保存
		insertExcelColFromArray(&pathList, "A", 2, config.ExportExcelColName, config.RepExportInfo)
	}

	// 防止立即退出
	failedNoExits("程序结束！！！")
}
